@fieldwangai/agentflow 0.1.86 → 0.1.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2300,13 +2300,27 @@ function normalizeDisplayShareNodeIds(ids, graph) {
2300
2300
  const id = String(rawId || "").trim();
2301
2301
  if (!id || seen.has(id)) continue;
2302
2302
  const instance = instances[id];
2303
- if (!workspaceDisplayKind(instance?.definitionId)) continue;
2303
+ if (!workspaceDisplayKindFromInstance(instance)) continue;
2304
2304
  seen.add(id);
2305
2305
  out.push(id);
2306
2306
  }
2307
2307
  return out;
2308
2308
  }
2309
2309
 
2310
+ function workspaceDisplayContentFromInstance(instance, kind = "") {
2311
+ const slots = [...(Array.isArray(instance?.input) ? instance.input : []), ...(Array.isArray(instance?.output) ? instance.output : [])];
2312
+ const primaryName = kind === "image" ? "src" : "content";
2313
+ const slotText = (slot) => workspaceSlotValue(slot);
2314
+ const hasSlotText = (slot) => slotText(slot).trim();
2315
+ const contentSlot =
2316
+ slots.find((slot) => String(slot?.name || "") === primaryName && hasSlotText(slot)) ||
2317
+ slots.find((slot) => String(slot?.name || "") === "result" && hasSlotText(slot)) ||
2318
+ slots.find((slot) => String(slot?.name || "") === "filePath" && hasSlotText(slot)) ||
2319
+ slots.find((slot) => String(slot?.type || "") === "text" && hasSlotText(slot));
2320
+ const slotContent = contentSlot ? slotText(contentSlot) : "";
2321
+ return String(isWorkspaceOneClickTaskDefinitionId(instance?.definitionId) ? slotContent : (instance?.body || slotContent));
2322
+ }
2323
+
2310
2324
  function normalizeDisplayShareLayout(layout, fallback = "canvas") {
2311
2325
  const text = String(layout || "").trim();
2312
2326
  return ["canvas", "gallery", "slides", "document", "single"].includes(text) ? text : fallback;
@@ -2518,8 +2532,8 @@ function publicDisplayPayloadFromShare(root, share) {
2518
2532
  const nodes = nodeIds.map((id) => {
2519
2533
  const instance = instances[id] || {};
2520
2534
  const definitionId = String(instance.definitionId || "");
2521
- const kind = workspaceDisplayKind(definitionId);
2522
- const rawBody = String(instance.body || "");
2535
+ const kind = workspaceDisplayKindFromInstance(instance);
2536
+ const rawBody = workspaceDisplayContentFromInstance(instance, kind);
2523
2537
  const filePath = workspaceDisplayTextFilePath(rawBody, kind);
2524
2538
  let body = rawBody;
2525
2539
  if (filePath) {
@@ -2811,6 +2825,20 @@ function buildWorkspaceGeneratePrompt(payload) {
2811
2825
  ? payload.selectedNodeIds.map((id) => String(id || "").trim()).filter(Boolean)
2812
2826
  : [];
2813
2827
  const skillsBlock = typeof payload?.skillsBlock === "string" ? payload.skillsBlock.trim() : "";
2828
+ const history = Array.isArray(payload?.messages) ? payload.messages : [];
2829
+ const historyBlock = history
2830
+ .slice(-16)
2831
+ .map((msg) => {
2832
+ const text = String(msg?.text || "").trim();
2833
+ if (!text) return "";
2834
+ const kind = String(msg?.kind || "").trim();
2835
+ if (kind === "raw" || kind === "prompt" || kind === "thinking") return "";
2836
+ const role = msg?.role === "user" ? "user" : (msg?.error ? "error" : "assistant");
2837
+ if (kind === "run-summary" || kind === "activity") return `context: ${text}`;
2838
+ return `${role}: ${text}`;
2839
+ })
2840
+ .filter(Boolean)
2841
+ .join("\n\n");
2814
2842
  const contexts = Array.isArray(payload?.contexts) ? payload.contexts : [];
2815
2843
  const contextBlocks = contexts
2816
2844
  .map((ctx, idx) => {
@@ -2867,6 +2895,7 @@ function buildWorkspaceGeneratePrompt(payload) {
2867
2895
  skillsBlock ? `\n## Selected Skills\n\n${skillsBlock}` : "",
2868
2896
  kindInstruction,
2869
2897
  contextBlocks ? `\n## 上下文\n\n${contextBlocks}` : "",
2898
+ historyBlock ? `\n## 对话历史\n\n${historyBlock}` : "",
2870
2899
  `\n## 用户 prompt\n\n${userPrompt}`,
2871
2900
  ].filter(Boolean).join("\n");
2872
2901
  }
@@ -3462,6 +3491,14 @@ function workspaceDisplayKind(definitionId) {
3462
3491
  return "";
3463
3492
  }
3464
3493
 
3494
+ function workspaceDisplayKindFromInstance(instance) {
3495
+ const direct = workspaceDisplayKind(instance?.definitionId);
3496
+ if (direct) return direct;
3497
+ if (!isWorkspaceOneClickTaskDefinitionId(instance?.definitionId)) return "";
3498
+ if (!workspaceDisplayContentFromInstance(instance, workspaceContextRunDisplayKind(instance)).trim()) return "";
3499
+ return workspaceContextRunDisplayKind(instance);
3500
+ }
3501
+
3465
3502
  function workspaceDisplayTextFilePath(value, kind = "") {
3466
3503
  const text = String(value || "").trim();
3467
3504
  if (!text || text.length > 260) return "";